#pragma once

#include "IxDraw.h"

[
    object,
    uuid("E93411C7-0E73-431b-AFE5-73D881A82C21"),
    pointer_default(unique)
]
__interface IxView : IUnknown
{
    HRESULT GetLayoutType(LPINT pnType);
    HRESULT SetLayoutType(INT nType);

    HRESULT GetBoxRect(LPRECT lprcBox);
    HRESULT SetBoxRect(RECT rcBox);

    HRESULT GetSize(LPSIZE lpszSize);
    HRESULT SetSize(SIZE szSize);

    HRESULT GetPosition(LPPOINT pptPos);
    HRESULT SetPosition(POINT ptPos);

    HRESULT GetMargin(LPRECT lprcMargin);
    HRESULT SetMargin(RECT rcMargin);

    HRESULT GetPadding(LPRECT lprcPadding);
    HRESULT SetPadding(RECT rcPadding);

    HRESULT GetBorder(LPRECT lprcBorder);
    HRESULT SetBorder(RECT rcBorder);

    HRESULT GetBorderColor(LPCOLORREF lpclrBorder);
    HRESULT SetBorderColor(COLORREF clrBorder);

    HRESULT GetAlignment(LPINT pnAlignment);
    HRESULT SetAlignment(INT nAlignment);

    HRESULT GetState(LPINT pnState);
    HRESULT SetState(INT nState);

    HRESULT GetAlpha(LPBYTE pbyAlpha);
    HRESULT SetAlpha(BYTE byAlpha);

    HRESULT GetZOrder(LPINT pnZorder);
    HRESULT SetZOrder(INT nZorder);

    HRESULT GetCheck(LPBOOL pbCheck);
    HRESULT SetCheck(BOOL bCheck);

    HRESULT GetEnable(LPBOOL pbEnable);
    HRESULT SetEnable(BOOL bEnable);

    HRESULT GetNormalDraw(IxDraw** ppDraw);
    HRESULT SetNormalDraw(IxDraw* pDraw);

    HRESULT GetHighlightDraw(IxDraw** ppDraw);
    HRESULT SetHighlightDraw(IxDraw* pDraw);

    HRESULT GetPushDraw(IxDraw** ppDraw);
    HRESULT SetPushDraw(IxDraw* pDraw);

    HRESULT GetDisableDraw(IxDraw** ppDraw);
    HRESULT SetDisableDraw(IxDraw* pDraw);

    HRESULT GetCheckNormalDraw(IxDraw** ppDraw);
    HRESULT SetCheckNormalDraw(IxDraw* pDraw);

    HRESULT GetCheckHighlightDraw(IxDraw** ppDraw);
    HRESULT SetCheckHighlightDraw(IxDraw* pDraw);

    HRESULT GetCheckPushDraw(IxDraw** ppDraw);
    HRESULT SetCheckPushDraw(IxDraw* pDraw);

    HRESULT GetCheckDisableDraw(IxDraw** ppDraw);
    HRESULT SetCheckDisableDraw(IxDraw* pDraw);

    HRESULT GetShowState(LPBOOL pbShow);
    HRESULT SetShowState(BOOL bShow);

    HRESULT GetVisibleState(LPBOOL pbVisible);

    HRESULT SetFocusState(BOOL bFocus);
    HRESULT GetFocusState(LPBOOL pbFocus);

    HRESULT GetVisibleRect(LPRECT lprcVisible);
    HRESULT GetAbsoluteRect(LPRECT lprcAbsolute);

    HRESULT HitTest(POINT pt, LPBOOL pbIn);
};